home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 5 / MACVOGL- / VCALLS.C < prev    next >
C/C++ Source or Header  |  1992-07-19  |  3KB  |  262 lines

  1. #include "vogl.h"
  2.  
  3. /*
  4.  * Handles all the v4f v3f v2f calls
  5.  */
  6.  
  7.  
  8. /*
  9.  *  vcall
  10.  *
  11.  *    Specify a generic point.
  12.  */
  13. void
  14. vcall(vector, len)
  15.     double    vector[];
  16.     int    len;
  17. {
  18.     Vector    vec;
  19.  
  20.     vec[0] = vector[0];
  21.     vec[1] = vector[1];
  22.     vec[2] = 0.0;
  23.     vec[3] = 1.0;
  24.  
  25.     if (len == 3) {
  26.         vec[2] = vector[2];
  27.         vec[3] = 1.0;
  28.     } else if (len == 4) {
  29.         vec[2] = vector[2];
  30.         vec[3] = vector[3];
  31.     }
  32.  
  33.     if (vdevice.save) {
  34.         vdevice.savex = vec[V_X];
  35.         vdevice.savey = vec[V_Y];
  36.         vdevice.savez = vec[V_Z];
  37.     } 
  38.     
  39.     switch (vdevice.bgnmode) {
  40.     case VLINE:
  41.         if (vdevice.save) {
  42.             vdevice.save = 0;
  43.             move(vec[V_X], vec[V_Y], vec[V_Z]);
  44.             break;
  45.         }
  46.  
  47.         draw(vec[V_X], vec[V_Y], vec[V_Z]);
  48.         break;
  49.     case VPNT:
  50.         pnt(vec[V_X], vec[V_Y], vec[V_Z]);
  51.         break;
  52.     case VCLINE:
  53.         if (vdevice.save) {
  54.             vdevice.save = 0;
  55.             move(vec[V_X], vec[V_Y], vec[V_Z]);
  56.             break;
  57.         }
  58.             
  59.         draw(vec[V_X], vec[V_Y], vec[V_Z]);
  60.         break;
  61.     case VPOLY:
  62.         if (vdevice.save) {
  63.             vdevice.save = 0;
  64.             pmv(vec[V_X], vec[V_Y], vec[V_Z]);
  65.             break;
  66.         } 
  67.  
  68.         pdr(vec[V_X], vec[V_Y], vec[V_Z]);
  69.         break;
  70.     default:
  71.         move(vec[V_X], vec[V_Y], vec[V_Z]);
  72.     }
  73. }
  74.         
  75. /*
  76.  * v4f    
  77.  *     Adds a 4D point to our fake point buffer
  78.  */
  79. void
  80. v4f(vec)
  81.     double    vec[4];
  82. {
  83.     vcall(vec, 4);
  84. }
  85.  
  86. /*
  87.  * v3f    
  88.  *     Adds a 3D point to our fake point buffer
  89.  */
  90. void
  91. v3f(vec)
  92.     double    vec[3];
  93. {
  94.     vcall(vec, 3);
  95. }
  96.  
  97. /*
  98.  * v2f    
  99.  *     Adds a 2D point to our fake point buffer
  100.  */
  101. void
  102. v2f(vec)
  103.     double    vec[2];
  104. {
  105.     vcall(vec, 2);
  106. }
  107.  
  108.  
  109. /*
  110.  * v4d    
  111.  *     Adds a 4D point to our fake point buffer
  112.  */
  113. void
  114. v4d(vec)
  115.     double    vec[4];
  116. {
  117.     double    v[4];
  118.  
  119.     v[0] = vec[0];
  120.     v[1] = vec[1];
  121.     v[2] = vec[2];
  122.     v[3] = vec[3];
  123.  
  124.     vcall(v, 4);
  125. }
  126.  
  127. /*
  128.  * v3d    
  129.  *     Adds a 3D point to our fake point buffer
  130.  */
  131. void
  132. v3d(vec)
  133.     double    vec[3];
  134. {
  135.     double    v[3];
  136.  
  137.     v[0] = vec[0];
  138.     v[1] = vec[1];
  139.     v[2] = vec[2];
  140.  
  141.     vcall(v, 3);
  142. }
  143.  
  144. /*
  145.  * v2d    
  146.  *     Adds a 2D point to our fake point buffer
  147.  */
  148. void
  149. v2d(vec)
  150.     long    vec[2];
  151. {
  152.     double    v[2];
  153.  
  154.     v[0] = vec[0];
  155.     v[1] = vec[1];
  156.  
  157.     vcall(v, 2);
  158. }
  159.  
  160.  
  161.  
  162. /*
  163.  * v4i    
  164.  *     Adds a 4D point to our fake point buffer
  165.  */
  166. void
  167. v4i(vec)
  168.     long    vec[4];
  169. {
  170.     double    v[4];
  171.  
  172.     v[0] = vec[0];
  173.     v[1] = vec[1];
  174.     v[2] = vec[2];
  175.     v[3] = vec[3];
  176.  
  177.     vcall(v, 4);
  178. }
  179.  
  180. /*
  181.  * v3i    
  182.  *     Adds a 3D point to our fake point buffer
  183.  */
  184. void
  185. v3i(vec)
  186.     long    vec[3];
  187. {
  188.     double    v[3];
  189.  
  190.     v[0] = vec[0];
  191.     v[1] = vec[1];
  192.     v[2] = vec[2];
  193.  
  194.     vcall(v, 3);
  195. }
  196.  
  197. /*
  198.  * v2i    
  199.  *     Adds a 2D point to our fake point buffer
  200.  */
  201. void
  202. v2i(vec)
  203.     long    vec[2];
  204. {
  205.     double    v[2];
  206.  
  207.     v[0] = vec[0];
  208.     v[1] = vec[1];
  209.  
  210.     vcall(v, 2);
  211. }
  212. /*
  213.  * v4s    
  214.  *     Adds a 4D point to our fake point buffer
  215.  */
  216. void
  217. v4s(vec)
  218.     short    vec[4];
  219. {
  220.     double    v[4];
  221.  
  222.     v[0] = vec[0];
  223.     v[1] = vec[1];
  224.     v[2] = vec[2];
  225.     v[3] = vec[3];
  226.  
  227.     vcall(v, 4);
  228. }
  229.  
  230. /*
  231.  * v3s    
  232.  *     Adds a 3D point to our fake point buffer
  233.  */
  234. void
  235. v3s(vec)
  236.     short    vec[3];
  237. {
  238.     double    v[3];
  239.  
  240.     v[0] = vec[0];
  241.     v[1] = vec[1];
  242.     v[2] = vec[2];
  243.  
  244.     vcall(v, 3);
  245. }
  246.  
  247. /*
  248.  * v2s    
  249.  *     Adds a 2D point to our fake point buffer
  250.  */
  251. void
  252. v2s(vec)
  253.     short    vec[2];
  254. {
  255.     double    v[2];
  256.  
  257.     v[0] = vec[0];
  258.     v[1] = vec[1];
  259.  
  260.     vcall(v, 2);
  261. }
  262.